home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / dev / gui / DesignerV1_53.lha / Designer / MultipleDemo / MultipleDemo.c < prev    next >
C/C++ Source or Header  |  1995-04-28  |  3KB  |  161 lines

  1. /* Compile me to get full executable. */
  2.  
  3. #include "multipledemoc.c"
  4.  
  5. int done=0;
  6. ULONG count;
  7. UWORD Code;
  8. struct Gadget *Gad;
  9. struct IntuiMessage *imsg;
  10. struct MsgPort *MyMsgPort;
  11. struct WindowNode *WinNode;
  12. struct WindowNode *WinNode2;
  13. struct List WindowList;
  14.  
  15. int OpenNewWin(void)
  16. {
  17. struct WindowNode * WN;
  18. WN=AllocMem(sizeof(struct WindowNode),MEMF_CLEAR);
  19. if (WN !=NULL)
  20.     {
  21.     OpenWindowWinNodeWin( MyMsgPort, WN );
  22.     if (WN->Win==NULL)
  23.         {
  24.         FreeMem(WN,sizeof(struct WindowNode));
  25.         }
  26.     else
  27.         {
  28.         AddTail(&WindowList,(struct Node *)WN);
  29.         WN->Win->UserData=(void *)WN;
  30.         count=0;
  31.         WinNode2=(struct WindowNode *)WindowList.lh_Head;
  32.         while (WinNode2->ln_Succ != NULL)
  33.             {
  34.             count++;
  35.             GT_SetGadgetAttrs(WinNode2->WinGadgets[2],WinNode2->Win, NULL, GTNM_Number, count, TAG_DONE);
  36.             WinNode2=WinNode2->ln_Succ;
  37.             }
  38.         return(0);
  39.         }
  40.     }
  41. return(1);
  42. }
  43.  
  44. int CloseOneWin( struct WindowNode * WN)
  45. {
  46.     Remove((struct Node *)WN);
  47.     CloseWindowWinNodeWin(WN);
  48.     FreeMem(WN,sizeof(struct WindowNode));
  49.     count=0;
  50.     WinNode2=(struct WindowNode *)WindowList.lh_Head;
  51.     while (WinNode2->ln_Succ != NULL)
  52.         {
  53.         count++;
  54.         GT_SetGadgetAttrs(WinNode2->WinGadgets[2],WinNode2->Win, NULL, GTNM_Number, count, TAG_DONE);
  55.         WinNode2=WinNode2->ln_Succ;
  56.         }
  57. }
  58.  
  59. void ProcessMenuIDCMPCommonMenu( UWORD MenuNumber)
  60. {
  61. UWORD MenuNum;
  62. UWORD ItemNumber;
  63. struct MenuItem *item;
  64. while ((MenuNumber != MENUNULL))
  65.     {
  66.     item = ItemAddress( CommonMenu, MenuNumber);
  67.     MenuNum = MENUNUM(MenuNumber);
  68.     ItemNumber = ITEMNUM(MenuNumber);
  69.     switch ( MenuNum )
  70.         {
  71.         case CommonMenu_Options :
  72.             switch ( ItemNumber )
  73.                 {
  74.                 case CommonMenu_Options_Item0 :
  75.                     WinNode=(struct WindowNode *)WindowList.lh_Head;
  76.                     while (WinNode->ln_Succ->ln_Succ != NULL)
  77.                         {
  78.                         CloseOneWin(WinNode);
  79.                         WinNode=(struct WindowNode *)WindowList.lh_Head;
  80.                         }
  81.                     break;
  82.                 case CommonMenu_Options_Item2 :
  83.                     WinNode=(struct WindowNode *)WindowList.lh_Head;
  84.                     while (WinNode->ln_Succ != NULL)
  85.                         {
  86.                         CloseOneWin(WinNode);
  87.                         WinNode=(struct WindowNode *)WindowList.lh_Head;
  88.                         }
  89.                     break;
  90.                 }
  91.             break;
  92.         }
  93.     MenuNumber = item->NextSelect;
  94.     }
  95. }
  96.  
  97. int main(void)
  98. {
  99. ULONG class;
  100. if (OpenLibs()==0)
  101.     {
  102.     NewList(&WindowList);
  103.     if ((MyMsgPort=CreateMsgPort())!=0)
  104.         {
  105.         if (OpenNewWin()==0)
  106.             while(done==0)
  107.                 {
  108.                 Wait(1L << MyMsgPort->mp_SigBit);
  109.                 imsg=GT_GetIMsg(MyMsgPort);
  110.                 while (imsg != NULL )
  111.                     {
  112.                     class=imsg->Class;
  113.                     Code=imsg->Code;
  114.                     Gad=(struct Gadget *)imsg->IAddress;
  115.                     WinNode = (struct WindowNode *)imsg->IDCMPWindow->UserData;
  116.                     GT_ReplyIMsg(imsg);
  117.                     switch ( class )
  118.                         {
  119.                         case IDCMP_GADGETUP :
  120.                             switch ( Gad->GadgetID ) 
  121.                                 {
  122.                                 case CommonWin_Gad0 :
  123.                                     OpenNewWin();
  124.                                     break;
  125.                                 case CommonWin_Gad1 :
  126.                                     OpenNewWin();
  127.                                     OpenNewWin();
  128.                                     OpenNewWin();
  129.                                     OpenNewWin();
  130.                                     OpenNewWin();
  131.                                     break;
  132.                                 }
  133.                             break;
  134.                         case IDCMP_CLOSEWINDOW :
  135.                             CloseOneWin(WinNode);
  136.                             if (WindowList.lh_Head->ln_Succ==NULL)
  137.                               done=1;
  138.                             break;
  139.                         case IDCMP_MENUPICK :
  140.                             ProcessMenuIDCMPCommonMenu( Code );
  141.                             if (WindowList.lh_Head->ln_Succ==NULL)
  142.                               done=1;
  143.                             break;
  144.                         }
  145.                     imsg=GT_GetIMsg(MyMsgPort);
  146.                     }
  147.                 }
  148.         else
  149.             printf("Cannot open window.\n");
  150.         if (CommonMenu != NULL)
  151.           FreeMenus(CommonMenu);
  152.         DeleteMsgPort(MyMsgPort);
  153.         }
  154.     else
  155.         printf("Cannot make message Port.\n");
  156.     CloseLibs();
  157.     }
  158. else
  159.     printf("Cannot open libraries.\n");
  160. }
  161.